// 公共数据、插件js

// np为当前项目的公共插件模块,调用时请用np.方法名()调用，防止方法重名。
var np = (function(mod,$){
    var isLogin = false;
    // 这里判断cookie是否存在并用userId调用获取用户信息的接口，判断用户的权限
    if(getCookie("userId")){
        isLogin  = true;
    }else{
        isLogin = false;
    }

    function setCookie(name, value) {
        var d = new Date();
        d.setTime(d.getTime() + (30*24*60*60*1000));
        var expires = "expires="+ d.toUTCString();
        document.cookie = name + "=" + value + ";" + expires + ";path=/";
    }

    function getCookie(cname) {
        var name = cname + "=";
        var decodedCookie = decodeURIComponent(document.cookie);
        var ca = decodedCookie.split(';');
        for(var i = 0; i <ca.length; i++) {
            var c = ca[i];
            while (c.charAt(0) == ' ') {
                c = c.substring(1);
            }
            if (c.indexOf(name) == 0) {
                return c.substring(name.length, c.length);
            }
        }
        return "";
    }

    function delCookie(name){
        var exp = new Date();
        exp.setTime(exp.getTime() - 1);
        var cval=getCookie(name);
        if(cval!=null)
            document.cookie= name + "="+cval+";expires="+exp.toGMTString();
    }


    // 竖向翻滚插件,obj为需要翻滚的元素,dis为翻滚的元素(-高度)
    var AutoScroll = function(obj,dis){
        return function () {
            $(obj).find("ul:first").animate({
                marginTop: dis
            }, 1200, function() {
                $(this).css({
                    marginTop: "0px"
                }).find("li:first").appendTo(this);
            });
        }
    }

    //格式化日期
    var dateFormat = function(fmt,date){
        var o = {
            "M+" : date.getMonth()+1,                 //月份
            "d+" : date.getDate(),                    //日
            "h+" : date.getHours(),                   //小时
            "m+" : date.getMinutes(),                 //分
            "s+" : date.getSeconds(),                 //秒
            "q+" : Math.floor((date.getMonth()+3)/3), //季度
            "S"  : date.getMilliseconds()             //毫秒
        };
        if(/(y+)/.test(fmt))
            fmt=fmt.replace(RegExp.$1, (date.getFullYear()+"").substr(4 - RegExp.$1.length));
        for(var k in o)
            if(new RegExp("("+ k +")").test(fmt))
                fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));
        return fmt;
    }

    //判断周
    var getNowDay = function(nowDay) {
        switch(nowDay){
            case 0:
                nowDay = "星期日";
                break;
            case 1:
                nowDay = "星期一";
                break;
            case 2:
                nowDay = "星期二";
                break;
            case 3:
                nowDay = "星期三";
                break;
            case 4:
                nowDay = "星期四";
                break;
            case 5:
                nowDay = "星期五";
                break;
            default:
                nowDay = "星期六";
        }
        return nowDay;
    }

    // 浏览器可视区域的宽高
    var client = function(){
        if(window.innerWidth){
            return {
                "width":window.innerWidth,
                "height":window.innerHeight
            };
        }else if(document.compatMode === "CSS1Compat"){
            return {
                "width":document.documentElement.clientWidth,
                "height":document.documentElement.clientHeight
            };
        }else{
            return {
                "width":document.body.clientWidth,
                "height":document.body.clientHeight
            };
        }
    }

    // 重置页面内容的上边距，根据不同高度分辨率居中内容
    var centervertical = function(ele,headerH,footerH) {
        var eleH = ele.offsetHeight;
        var height = client().height;
        var top = (height - eleH - headerH - footerH) / 2;
        if(top>0){
            ele.style.marginTop = top + 'px';
        }
    }

    //显示蒙层插件
    var pop = function(fullbgele) {
        var bh = $(window).height();
        var bw = $(window).width();
        fullbgele.css({
            height: bh,
            width: bw,
            display: "block"
        })
    }

    // 自动设置每个页面内容在每种分辨率下垂直居中
    var verticalCenter = function () {
        var oMain = document.getElementsByTagName("main")[0];
        // var headerH = document.getElementsByTagName("header")[0].offsetHeight;
        var oFooter = document.getElementsByTagName("footer")[0];
        // var oFooterH = oFooter ? oFooter.offsetHeight : 0;
        centervertical(oMain,105,50);
    }

    // 视频高度97%，宽度16：9自适应
    var autoWidth = function(el,widthPercent){

        var newHeight = $("body").height()*0.97;
        $(el).height(newHeight);
        var newWidth = $(el).height()/widthPercent;
        $(el).width(newWidth);  // 0.5625 => 维持16:9比例,也就是9除以16*可替换其他比例
        var videoMarginLeft = -(newWidth/2);
        // $(el).css({"top":"50%","marginTop":-($(el).height()/2)});
        $(el).css({"left":"50%","marginLeft":videoMarginLeft});

        var bodyWidth = $("body").width();

        if(newWidth > bodyWidth) {
            newWidth =  $(el).width(bodyWidth);
            newHeight =  $(el).height($(el).width() * widthPercent);
            $(el).css({"left": "50%", "marginLeft": -($(el).width() / 2)});
            // $(el).css({"top":"50%","marginTop":-($(el).height()/2)});
        }

    }

    // 数组去重
    function uniq(array){
        var temp = []; //一个新的临时数组
        for(var i = 0; i < array.length; i++){
            if(temp.indexOf(array[i]) == -1){
                temp.push(array[i]);
            }
        }
        return temp;
    }


    // 初始化翻页,渲染列表内容，用于重绘或初始化列表
    var createList = function (data,pageStep,targetUl,defaultImgUrl,pageIndex){ // 第一个参数为需加载的数据，第二个参数为一页显示的数量，第三个参数为列表的父级节点,第四个参数为图片默认地址,第五个参数是绘制时页面留在第几页
        var classesListLen = data.length;// 数据的总条数，后台通过ajax获取数据总数
        var pageStep = pageStep; // 一页显示数据条数
        pageIndex = pageIndex || 1;  // 如果有指定的页数，则显示指定页数，如果没有则显示第一页
        var totalPage = Math.ceil(classesListLen/pageStep); // 总页数
        (pageIndex>totalPage) && (pageIndex = totalPage);

        // 创建分页
        $("#Pagination").pagination({
            currentPage: pageIndex,
            totalPage: totalPage,
            isShow: true,// 显示首页，尾页
            count: 4, //显示总页数,多余隐藏切换才显示
            homePageText: "首页",
            endPageText: "尾页",
            prevPageText: "上页",
            nextPageText: "下页",
            callback: pageselectCallback
        });

        // 翻页回调，翻页时获取当前数据，并对当前页数据进行排序
        function pageselectCallback(pageIndex){//pageIndex为当前页码
            var oUl=$(targetUl);
            oUl.empty();
            // startIndex是当前页第一条数据id
            var startIndex = (pageIndex-1)*pageStep;
            // endIndex是当前页最后一条数据id
            var endIndex = pageIndex < totalPage ? pageStep*pageIndex : classesListLen;
            // 回调页面内数据个性化渲染函数
            getDataAndSortCallback(oUl,startIndex,endIndex,data,defaultImgUrl);
        }


        pageselectCallback(pageIndex);
    }

    // 小三角选择菜单
    function toggleMenu(setting){
        defaultSetting = {
            targetTitleEle:".active-status", //select content
            submenuEle:".active-item-sub-menu", //options 容器
            toggleClassName:"actived", // 一级菜单切换小三角的样式名
            subMenuChildEle:".active-item-sub-menu span", // options子元素
            defaultMenu:""
        }
        setting ? setting : defaultSetting;
        $("body").on("click",setting.targetTitleEle,function(){
            $(this).find(setting.submenuEle).toggle();
            var className = setting.toggleClassName;
            if(String($(this).children().eq(1).attr("class")).indexOf(className)>=0){
                $(this).children().eq(1).removeClass(className);
            }else{
                $(this).children().eq(1).addClass(className);
            }
            // var fullbgHtml = "<div class='fullbg' style='display: block;z-index: 0;opacity: 0;filter: alpha(opacity=0)'></div>"
            // $("body").append(fullbgHtml);
        })

        $("body").on("click",setting.subMenuChildEle,function(){
            //判断如果为不限，则显示原始标签
            var menuHtml = ($(this).attr("optionIndex") == 0 && setting.defaultMenu) ? setting.defaultMenu : $(this).html();

            $(this).parent(setting.submenuEle).prev().html(menuHtml);

            $(this).parent(setting.submenuEle).prev().attr("status",$(this).attr("optionIndex"));

            $(this).parent(setting.submenuEle).prev().removeClass(setting.toggleClassName);
            $(this).parent(setting.submenuEle).hide();

            // $("body .fullbg").remove();
            // 切换状态回调函数
            changeStatusCallback($(this).parent(setting.submenuEle).prev());
        })

        $("body").on("mouseleave",setting.submenuEle,function() {
            $(this).prev().removeClass(setting.toggleClassName);
            $(this).hide();
        })
        $("body").on("mouseleave",setting.targetTitleEle,function () {
            $(this).children().eq(1).removeClass(setting.toggleClassName);
            $(this).find(setting.submenuEle).hide();
        })

        // $("body").on("click",".fullbg",function (event) {
        //     $(setting.submenuEle).hide();
        //     $(this).remove();
        //     $(setting.targetTitleEle).removeClass("actived");
        // })
    }

    // toggle切换样式
    function toggleClass(el,className){ //el为元素，className为样式名
        $("body").on("click",el,function(){
            if(String($(this).attr("class")).indexOf(className)>=0){
                $(this).removeClass(className);
            }else{
                $(this).addClass(className);
            }
        })
    }


    // 获取url中"?"符后的字串
    function GetRequest() {
        var url = location.search; //获取url中"?"符后的字串
        var theRequest = new Object();
        if (url.indexOf("?") != -1) {
            var str = url.substr(1);
            strs = str.split("&");
            for(var i = 0; i < strs.length; i ++) {
                theRequest[strs[i].split("=")[0]]=unescape(strs[i].split("=")[1]);
            }
        }
        return theRequest;
    }


    return mod = {
        isLogin:isLogin,
        setCookie:setCookie,
        getCookie:getCookie,
        delCookie:delCookie,
        autoWidth:autoWidth,
        toggleClass:toggleClass,
        uniq:uniq,
        AutoScroll :AutoScroll,
        dateFormat : dateFormat,
        getNowDay : getNowDay,
        client : client,
        centervertical : centervertical,
        pop : pop,
        verticalCenter:verticalCenter,
        createList:createList,
        toggleMenu:toggleMenu,
        GetRequest:GetRequest
    }
})((window.sh || {}),jQuery);

// 公共插件结束



// 扩展数组原型链，删除对应内容的数组元素
Array.prototype.remove = function(val) {
    var index = this.indexOf(val);
    if (index > -1) {
        this.splice(index, 1);
    }
};


